package bricolot;

import bricolot.exporter.IBricolotoExporter;
import java.util.ArrayList;
import java.util.List;

public class Societe {

	private String nom;
	private String adresse;
	private List<Garage> garages = new ArrayList<Garage>();

	public Societe(String nom, String adresse) {
		this.setNom(nom);
		this.setAdresse(adresse);
	}

	public Societe() {
		this(Util.lireChaine("Nom de la societe       : "), Util
				.lireChaine("Adresse du siege social : "));
	}

	private int chercherNumGar(String nom) {
		for (int i = 0; i < getGarages().size(); i++)
			if (((Garage) getGarages().get(i)).getNom().equals(nom))
				return i;
		return -1;
	}

	public boolean ajouterGar() {
		Garage g = new Garage();
		if (chercherNumGar(g.getNom()) != -1)
			return false;
		getGarages().add(g);
		return true;
	}

	public boolean supprimerGar(String nom) {
		int g = chercherNumGar(nom);
		if (g == -1)
			return false;
		getGarages().remove(g);
		return true;
	}

	public Garage chercherGar(String nom) {
		int g = chercherNumGar(nom);
		if (g == -1)
			return null;
		return (Garage) getGarages().get(g);
	}

	public boolean ajouterRep(String nom) {
		Garage g = chercherGar(nom);
		if (g == null)
			return false;
		g.ajouterRep();
		return true;
	}

	public boolean supprimerRep(String nom, int i) {
		Garage g = chercherGar(nom);
		if (g == null)
			return false;
		return g.supprimerRep(i);
	}

	public String toString() {
		StringBuffer res = new StringBuffer("[[[SOCIETE]]] nom : " + getNom()
				+ " adresse : " + getAdresse());
		for (int i = 0; i < getGarages().size(); i++)
			res.append("\n  (" + i + ") " + getGarages().get(i));
		return res.toString();
	}

	public String getAdresse() {
		return adresse;
	}

	public void setAdresse(String adresse) {
		this.adresse = adresse;
	}

	public List<Garage> getGarages() {
		return garages;
	}

	public void setGarages(List<Garage> garages) {
		this.garages = garages;
	}

	public void accept(IBricolotoExporter aBricolotoExporter) {
		aBricolotoExporter.visitSociete(this);
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}
}
